﻿using System;
using System.Text;
using System.Data;
using System.Xml;
using System.Threading;
using System.Reflection;
using System.Collections.Generic;
using Cosmos.Hardware.Plugs;
using Cosmos.IL2CPU;
using Cosmos.IL2CPU.X86;
using Cosmos.Kernel;
using Cosmos.Kernel.Plugs;
using Cosmos.Sys;
using Cosmos.Sys.FileSystem;
using Cosmos.Sys.Plugs;
using Cosmos.Compiler.Debug;
using Cosmos.Compiler.Builder;

/*
 * Platform OS Source Code
 * This code belongs to LeveL X and the developers who have
 * worked on it for them. Before using the source code please
 * ask Eamon N. Cusic Jr. (LeveL X Owner) by email at:
 * eamon.cusic@levelx.org
 * 
 * Platform OS is copyrighted to LeveL X as of 2012.
 * It uses the MIT License.
 * 
 * Written on 06/23/2012 at 8:35 AM EST (Eastern Standard Time)
 * Last Updated on 06/23/2012 at 8:35 AM EST
*/

using Platform_OS.Core.Init;
using Platform_OS.Core.Components;

namespace Platform_OS
{
    class Kernel
    {
        #region Builder
        [STAThread]
        static void Main(string[] args)
        {
            BuildUI.Run();
        }
        #endregion

        public static void DisplayHeader()
        {
            // Title and Version Header
            Console.WriteLine("Platform OS I Dog (1.0.0)");
        }

        #region Color Variables
        public static int mouse = 1;
        public static int desktop = 1;
        public static int black = 0;
        public static int white = 1;
        #endregion

        // Main entry point of the kernel
        public static void Init()
        {
            #region Boot
            var xBoot = new Cosmos.Sys.Boot();
            xBoot.Execute();
            #endregion

            #region Start
            // Initialize GUI and move on from there
            Core.Init.Init.InitGUI();
            #endregion
        }
    }
}